import Vue from "vue";
import Vuex from "vuex";
// import settings from "./modules/settings";
// console.log(settings);

// 自动导入所有模块
// 使用require.context()方法，它会返回一个函数，该函数接受三个参数：
const modulesFiles = require.context("./modules", false, /\.js$/);
// 定义一个常量modules，它是一个数组，包含了modulesFiles.keys()方法返回的所有键
const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // 获取模块名称
  // 正则表达式匹配文件名，并去除文件扩展名$1
  const moduleName = modulePath.replace(/^\.\/(.*)\.js$/, "$1");
  // console.log("modulePath", modulePath);
  // console.log("moduleName", moduleName);
  // 导入模块
  const value = modulesFiles(modulePath);
  // console.log("value", value);
  // 注册模块
  modules[moduleName] = value.default;
  return modules;
}, {});

Vue.use(Vuex);

const state = {
  // 根级别的状态
};
const getters = {
  // 根级别的 getters
};
const mutations = {
  // 根级别的 mutations
  // print() {
  //   console.log("modulesFiles", modulesFiles);
  //   console.log("modules", modules);
  // },
};
const actions = {
  // 根级别的 actions
};

export default new Vuex.Store({
  // 根级别的
  state,
  getters,
  mutations,
  actions,
  // modules,
  modules,
});
